# Fiecare lucrare de laborator se va finaliza prin printarea script-ului
# sub forma unui raport si incarcarea lui online
# Rapoartele trebuie incarcate pana la sfarsitul orei de laborator!!!
# Lucrare de laborator realizata de:
NumeStudent = "Gal Oscar"
Specializare = "TM " # TM/ TC/ SICAS
print("Lucrare de laborator realizata de: ", NumeStudent)
print(" \t de la specializarea: ", Specializare)
Lucrare de laborator realizata de: Gal Oscar de la specializarea: TM
import os
import numpy as np
import cv2
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import ColorSpaceFunctions as clsFcts
# In[1] - Selectie si deschidere imagine
print('\n ----- INFO - In[1] Selectie si deschidere imagine -----\n')
# Setare cale locatie imagini si nume fisier imagine
imgsPath = "D:/_TestImages"
imgName = 'ImgTstColor/rose021.jpg'
#imgName = 'Kodak/kodim04.png'
# Se va testa programul pe 5 imagini din directorul ImgTstColor
imgFile = os.path.sep.join([imgsPath, imgName])
# deschidere imagine
print('\n [Info] Imaginea originala ', imgFile)
imgBGR = cv2.imread(imgFile)
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
print(" Shape:" , imgRGB.shape)
print(" Type :" , imgRGB.dtype)
fig = plt.figure(figsize=(10,10)); plt.imshow(imgRGB); plt.show()
----- INFO - In[1] Selectie si deschidere imagine -----
[Info] Imaginea originala D:/_TestImages\ImgTstColor/rose021.jpg
Shape: (448, 617, 3)
Type : uint8
print('\n [Info] Afisare Spatiu RGB')
clsFcts.plotColorComponents(imgRGB, 'R/G/B')
clsFcts.plotColorHistograms(imgRGB, 'R/G/B')
clsFcts.plot3DcolorSpace(imgRGB, imgRGB,'R/G/B') # cub RGB
# Urmarim cubul de culori in spatiul RGB
[Info] Afisare Spatiu RGB
Afisare Cub Culori in spatiu de culoare: R/G/B Numar culori unice care apar in imagine: 85361 din 2^24( 16777216 ) ; procent: 0.51 % acoperire cub
# In[2] - Setare spatii de culoare utilizate in aplicatie
print('\n ----- INFO - In[2] Spatii de culoare utilizate in aplicatie -----\n')
ColorSpacesList = ['R/G/B', 'Y/Cr/Cb', 'H/S/V', 'L/a/b', 'gray']
print('Lista spatii de culoare utilizate: ', ColorSpacesList)
OrgColorSpace = ColorSpacesList[0] # 0 - pentru RGB - imaginea la deschidere este RGB
----- INFO - In[2] Spatii de culoare utilizate in aplicatie ----- Lista spatii de culoare utilizate: ['R/G/B', 'Y/Cr/Cb', 'H/S/V', 'L/a/b', 'gray']
# In[3] - Selectie spatiu YCrCb si afisare componente si cub culori in noul spatiu
# YCbCr
SelClr = 1 # se selecteaza ca si o pozitie din vectorul ColorSpacesList
NewColorSpace = ColorSpacesList[SelClr]
print('\n ----- INFO - In[3] Conversie Spatiu de Culoare, din ' + OrgColorSpace + ' in '+ NewColorSpace)
ImgClrSp = clsFcts.ConvertColorSpace(imgRGB, OrgColorSpace , NewColorSpace)
clsFcts.plotColorComponents(ImgClrSp, NewColorSpace)
clsFcts.plotColorHistograms(ImgClrSp, NewColorSpace)
clsFcts.plot3DcolorSpace(ImgClrSp, imgRGB, NewColorSpace)
#Afisare 2D componente de Crominanta
SelectComponents = [0, 1, 1]
clsFcts.plot2DcolorSpace(ImgClrSp, imgRGB, NewColorSpace, SelectComponents)
# Observam cele 3 componenete din noul spatiu de culoare precum si histogramele lor
# Specificam la fiecare spatiu care componenta contine informatii despre
# luminata si crominanta
----- INFO - In[3] Conversie Spatiu de Culoare, din R/G/B in Y/Cr/Cb
Afisare Cub Culori in spatiu de culoare: Y/Cr/Cb Numar culori unice care apar in imagine: 84656 din 2^24( 16777216 ) ; procent: 0.5 % acoperire cub
Afisare Componente Crominata in spatiu de culoare: Y/Cr/Cb Numar culori unice care apar in imagine: 5931
# In[4] - Selectie spatiu HSV si afisare componente si cub culori in noul spatiu
# HSV
SelClr = 2 # se selecteaza ca si o pozitie din vectorul ColorSpacesList
NewColorSpace = ColorSpacesList[SelClr]
print('\n ----- INFO - In[3] Conversie Spatiu de Culoare, din ' + OrgColorSpace + ' in '+ NewColorSpace)
ImgClrSp = clsFcts.ConvertColorSpace(imgRGB, OrgColorSpace , NewColorSpace)
clsFcts.plotColorComponents(ImgClrSp, NewColorSpace)
clsFcts.plotColorHistograms(ImgClrSp, NewColorSpace)
clsFcts.plot3DcolorSpace(ImgClrSp, imgRGB, NewColorSpace)
#Afisare 2D componente de Crominanta
SelectComponents = [1, 1, 0]
clsFcts.plot2DcolorSpace(ImgClrSp, imgRGB, NewColorSpace, SelectComponents)
# Observam cele 3 componenete din noul spatiu de culoare precum si histogramele lor
# Specificam la fiecare spatiu care componenta contine informatii despre
# luminata si crominanta
----- INFO - In[3] Conversie Spatiu de Culoare, din R/G/B in H/S/V
Afisare Cub Culori in spatiu de culoare: H/S/V Numar culori unice care apar in imagine: 77962 din 2^24( 16777216 ) ; procent: 0.46 % acoperire cub
Afisare Componente Crominata in spatiu de culoare: H/S/V Numar culori unice care apar in imagine: 13250
# In[4] - Selectie spatiu HSV si afisare componente si cub culori in noul spatiu
# Lab
SelClr = 3 # se selecteaza ca si o pozitie din vectorul ColorSpacesList
NewColorSpace = ColorSpacesList[SelClr]
print('\n ----- INFO - In[3] Conversie Spatiu de Culoare, din ' + OrgColorSpace + ' in '+ NewColorSpace)
ImgClrSp = clsFcts.ConvertColorSpace(imgRGB, OrgColorSpace , NewColorSpace)
clsFcts.plotColorComponents(ImgClrSp, NewColorSpace)
clsFcts.plotColorHistograms(ImgClrSp, NewColorSpace)
clsFcts.plot3DcolorSpace(ImgClrSp, imgRGB, NewColorSpace)
#Afisare 2D componente de Crominanta
SelectComponents = [0, 1, 1]
clsFcts.plot2DcolorSpace(ImgClrSp, imgRGB, NewColorSpace, SelectComponents)
# Observam cele 3 componenete din noul spatiu de culoare precum si histogramele lor
# Specificam la fiecare spatiu care componenta contine informatii despre
# luminata si crominanta
----- INFO - In[3] Conversie Spatiu de Culoare, din R/G/B in L/a/b
Afisare Cub Culori in spatiu de culoare: L/a/b Numar culori unice care apar in imagine: 64845 din 2^24( 16777216 ) ; procent: 0.39 % acoperire cub
Afisare Componente Crominata in spatiu de culoare: L/a/b Numar culori unice care apar in imagine: 4882
# In[6] - modificare componente in spatiu de culoare selectat
# Se vor pastra doar componentele de crominanta
# Componenta de luminanta se seteaza la valoare constanta 128
# Se reface imaginea - conversie RGB pentru afisare
print('\n ----- INFO - In[6] Eliminare variatii/ componenta de luminata')
# Selectie spatiu de culoare din lista
# ColorSpacesList = ['R/G/B' = 0, 'Y/Cr/Cb' = 1, 'H/S/V' = 2, 'L/a/b' = 3, 'gray' = 3]
SelClr = 1 # cod spatiu de culoare (vals: 1,2,3)
NrCompConst = 2 # numar componenta care se seteaza constanta (vals: 0,1,2)
NewColorSpace = ColorSpacesList[SelClr]
ImgClrSp = clsFcts.ConvertColorSpace(imgRGB, OrgColorSpace , NewColorSpace)
print('\n Conversie Spatiu de Culoare, din ' + OrgColorSpace + ' in '+ NewColorSpace)
print('\n Componenta setata constanta ', NewColorSpace.split('/') [NrCompConst])
ImgClrSpMod =ImgClrSp.copy()
# setare componenta luminanta la o valoare constanta
ImgClrSpMod[:,:,NrCompConst] = 128
# ImgClrSpMod[:,:,1] = 255
# Reconversie imagine la sptiu RGB pentru aficare
ImgRGBref = clsFcts.ConvertColorSpace(ImgClrSpMod, NewColorSpace , OrgColorSpace)
fig = plt.figure(figsize=(10,10));plt.imshow( ImgRGBref); plt.show();
----- INFO - In[6] Eliminare variatii/ componenta de luminata Conversie Spatiu de Culoare, din R/G/B in Y/Cr/Cb Componenta setata constanta Cb
# In[1] - Selectie si deschidere imagine
print('\n ----- INFO - In[1] Selectie si deschidere imagine -----\n')
# Setare cale locatie imagini si nume fisier imagine
imgsPath = "D:/_TestImages"
imgName = 'ImgTstColor/rgb-colors.jpg'
#imgName = 'Kodak/kodim04.png'
# Se va testa programul pe 5 imagini din directorul ImgTstColor
imgFile = os.path.sep.join([imgsPath, imgName])
# deschidere imagine
print('\n [Info] Imaginea originala ', imgFile)
imgBGR = cv2.imread(imgFile)
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
print(" Shape:" , imgRGB.shape)
print(" Type :" , imgRGB.dtype)
fig = plt.figure(figsize=(10,10)); plt.imshow(imgRGB); plt.show()
----- INFO - In[1] Selectie si deschidere imagine -----
[Info] Imaginea originala D:/_TestImages\ImgTstColor/rgb-colors.jpg
Shape: (550, 550, 3)
Type : uint8
print('\n [Info] Afisare Spatiu RGB')
clsFcts.plotColorComponents(imgRGB, 'R/G/B')
clsFcts.plotColorHistograms(imgRGB, 'R/G/B')
clsFcts.plot3DcolorSpace(imgRGB, imgRGB,'R/G/B') # cub RGB
# Urmarim cubul de culori in spatiul RGB
[Info] Afisare Spatiu RGB
Afisare Cub Culori in spatiu de culoare: R/G/B Numar culori unice care apar in imagine: 80683 din 2^24( 16777216 ) ; procent: 0.48 % acoperire cub